package com.sicilin.system.user.util;

import com.sicilin.po.TSysUser;
import com.sicilin.system.login.dto.LoginRole;
import com.sicilin.system.login.dto.LoginUser;
import com.sicilin.system.user.dto.User;
import org.apache.commons.lang.StringUtils;

import java.util.Collection;

public class UserUtils {
    public static boolean validUpdateUser(TSysUser user){
        if(user == null ){return false;}
        if(StringUtils.isBlank(user.getAccount())){return false;}
        if(StringUtils.isBlank(user.getName())){return false;}
        if(StringUtils.isBlank(user.getPassword())){return false;}
        if(StringUtils.isNotBlank(user.getTelephone())
                && (!StringUtils.isNumeric(user.getTelephone()) || user.getTelephone().length() > 11 ) ){
            return false;
        }
        if(user.getSex() == null ){return false;}
        if(user.getStatus() == null){return false;}
        return true;
    }

    public static boolean validUpdateUser(User user){
        if(user == null ){return false;}
        if(StringUtils.isBlank(user.getAccount())){return false;}
        if(StringUtils.isBlank(user.getName())){return false;}
        if(StringUtils.isNotBlank(user.getTelephone())
                && (!StringUtils.isNumeric(user.getTelephone()) || user.getTelephone().length() > 11 ) ){
            return false;
        }
        if(user.getSex() == null ){return false;}
        return true;
    }

    public static Integer getMaxRoleLevel(Collection<LoginRole> roleCollection){
        if(roleCollection == null || roleCollection.isEmpty()){return 99;}
        int level = 99;
        for(LoginRole role:roleCollection){
            if(role == null || role.getLevel() == null){
                continue;
            }
            if(level > role.getLevel()){
                level = role.getLevel();
            }
        }
        return level;
    }

    public static Integer getMaxRoleLevel(LoginUser user) {
        if(user == null )return 99;
        if(user.getAccount().equals("admin")){return 0;}
        return getMaxRoleLevel(user.getRoles());
    }
}
